package com.malty.apimanage.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.malty.apimanage.domain.dto.api.ApiAddReq;
import com.malty.apimanage.domain.dto.api.ApiQueryReq;
import com.malty.apimanage.domain.dto.api.ApiUpdateReq;
import com.malty.apimanage.domain.vo.ApiMetaDataVO;
import com.malty.common.domain.entity.ApiMetaData;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author Administrator
 * @description 针对表【api_meta_data】的数据库操作Service
 * @createDate 2025-09-26 17:09:00
 */
public interface ApiMetaDataService extends IService<ApiMetaData> {

    /**
     * 新建api
     *
     * @param apiAddReq 新建api请求
     */
    void saveApiMetaData(ApiAddReq apiAddReq);

    /**
     * 根据id更新api元数据
     *
     * @param apiUpdateRequest 更新api请求
     * @return
     */
    boolean updateApiMetaDataById(ApiUpdateReq apiUpdateRequest);

    /**
     * 根据id查询api元数据
     *
     * @param id
     * @return
     */
    ApiMetaDataVO getApiMetaDataById(Long id);

    /**
     * 根据条件查询api数据
     *
     * @param apiQueryReq 查询条件
     * @return
     */
    List<ApiMetaDataVO> listApiMetaDataByQuery(ApiQueryReq apiQueryReq);

    /**
     * 根据条件分页查询api数据
     *
     * @param apiQueryReq
     * @return
     */
    Page<ApiMetaDataVO> pageList(ApiQueryReq apiQueryReq);

    /**
     * 修改接口状态
     *
     * @param id     主键id
     * @param status 状态
     * @return
     */
    Boolean updateStatus(Long id, int status);

    /**
     * 发布接口
     *
     * @param id 主键id
     * @return
     */
    Boolean apiOnline(Long id);

    /**
     * 下线接口
     *
     * @param id 主键id
     * @return
     */
    Boolean apiOffline(Long id);
}
